﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ProjetSMA.Model
{
    public abstract class GenericNode
    {
        protected string m_nomNoeud; //nom du nœud
        protected List<Transition> m_listTransition; //liste des transitions (prochains coups)
        protected double m_cost; //le coût du chemin qui part du nœud initial et qui arrive à ce nœud 
        protected double m_costHeuristique; //l’estimation heuristique du coût du chemin restant pour atteindre le nœud final
        protected double m_totalCost; //le coût total associé au nœud, en fait la somme des 2 valeurs précédentes
        protected bool m_visited; //vaut true Ssi l’état appartient à la liste des nœuds « ouverts » 
        protected GenericNode m_parent; //l’état parent

        //Accesseurs

        public abstract string NomNoeud { get; set; }
        public abstract double MyCost { get; set; }
        public abstract double MyCostHeuristique { get; set; }
        public abstract double MyTotalCost { get; set; }
        public abstract bool Visited { get; set; }
        public abstract GenericNode Parent { get; set; }

        //Méthodes

        public abstract double GetArcCost(); //renvoie le coût de la transition vers N2
        public abstract bool EndState(); //renvoie true Ssi le nœud correspond à un état terminal
        public abstract List<GenericNode> GetListSucc(); //renvoie la liste des nœuds successeurs
    }
}
